#ifndef EVENT_H
#define EVENT_H


#include <SDL/SDL.h>

namespace eats_core {

class Event
{
    public:

        Event();
        virtual ~Event();

        virtual void onEvent(SDL_Event* Event);
        virtual void inputFocusEvent();
        virtual void inputBlurEvent();
        virtual void keyDownEvent(SDLKey sym, SDLMod mod, Uint16 unicode);
        virtual void keyUpEvent(SDLKey sym, SDLMod mod, Uint16 unicode);
        virtual void mouseFocusEvent();
        virtual void mouseBlurEvent();
        virtual void mouseMoveEvent(int mX, int mY, int relX, int relY, bool Left,bool Right,bool Middle);
        virtual void mouseWheelEvent(bool Up, bool Down);    //Not implemented
        virtual void lButtonDownEvent(int mX, int mY);
        virtual void lButtonUpEvent(int mX, int mY);
        virtual void rButtonDownEvent(int mX, int mY);
        virtual void rButtonUpEvent(int mX, int mY);
        virtual void mButtonDownEvent(int mX, int mY);
        virtual void mButtonUpEvent(int mX, int mY);
        virtual void joyAxisEvent(Uint8 which, Uint8 axis, Sint16 value);
        virtual void joyButtonDownEvent(Uint8 which, Uint8 button);
        virtual void joyButtonUpEvent(Uint8 which, Uint8 button);
        virtual void joyHatEvent(Uint8 which, Uint8 hat, Uint8 value);
        virtual void joyBallEvent(Uint8 which, Uint8 ball, Sint16 xrel, Sint16 yrel);
        virtual void minimizeEvent();
        virtual void restoreEvent();
        virtual void resizeEvent(int w,int h);
        virtual void exposeEvent();
        virtual void exitEvent();
        virtual void userEvent(Uint8 type, int code, void* data1, void* data2);

};

}

#endif // EVENT_H
